Networked computer systems enable users to share resources, such as printers. A user at one computer can print on a printer connected to another computer. The computer using the resources of another computer is typically known as a client, and the computer providing resources to another computer is typically known as a server.
FIG. 1 illustrates a known networked computer system 10 that supports network printing. The computer system 10 includes a client 12 and a server 14 connected to one another via a network 16. The server 14 includes a spooling system 18. The spooling system 18 is connected to a printer 20. The spooling system 18 is responsible for receiving a print request from the client 12, processing the print request, and, if necessary, communicating with the printer 20 to complete the print request.
In order to effectively support network printing, the client 12 and the server 14 (in particular, the spooling system 18) must be able to communicate with one another. In other words, the spooling system 18 must be able to understand the print request that the client 12 sends to it. A number of print protocols have been established for the print request. These print protocols specify a format to which the print request must conform so that both the client 12 and the spooling system 18 can understand one another. One such print protocol is known as the Berkeley Print Protocol or the Line Printer Daemon Protocol ("LPD Protocol"). This protocol is described in the Internet Engineering Task Force Request For Comments 1179 ("RFC 1179") and is currently the most widely used print protocol. The LPD Protocol as described in RFC 1179 will be referred to as the "RFC 1179 LPD Protocol."
In addition to specifying a format to which the print request must conform, the print protocols specify an endpoint for communications (e.g., a port) for the print request. Clients sending print requests using a particular print protocol must send them to the endpoint for communications specified by the protocol, and spooling systems receiving and processing print requests using a particular print protocol must listen for and receive them at the specified endpoint for communications. For example, clients sending print requests using the RFC 1179 LPD Protocol must send them to port 515, and spooling systems receiving and processing print requests using the RFC 1179 LPD Protocol must listen for and receive them at port 515. Only a single spooling system can listen for and receive print requests at a given endpoint for communications.
While the RFC 1179 LPD Protocol is widely used and understood by many spooling systems, some spooling systems have been designed using print protocols other than the RFC 1179 LPD Protocol. As a result, some servers may include spooling systems that were not designed using, and do not understand, the RFC 1179 LPD Protocol. In this situation, in order to accommodate clients that are sending print requests using the RFC 1179 LPD Protocol, a process has been added to the server. This process receives the print request from the client, translates the print request into a format that is recognizable by the spooling system, and then sends the translated print request to the spooling system. The addition of such a process enables the server to include and use a spooling system that was not designed using, and does not understand, the RFC 1179 LPD Protocol, even when clients are sending print requests using the RFC 1179 LPD Protocol.
Spooling systems offer different features and have different capabilities. Consequently, in addition to being able to include and use a spooling system that was not designed using, and does not understand, the RFC 1179 LPD Protocol, it is desirable for a server to include and concurrently use a multiple number of spooling systems depending on the features and capabilities of the spooling systems. Since each print protocol specifies the endpoint for communications for print requests using the print protocol, and since only a single spooling system can listen for and receive print requests at a given endpoint for communications, known computer systems only allow a multiple number of spooling systems to concurrently execute if they are using different print protocols (and thus, are listening for and receiving print requests at different endpoints for communications). Known computer systems do not allow a multiple number of spooling systems to concurrently execute if they are using the same print protocol. However, there is a desire to have a multiple number of spooling systems that use the same print protocol to concurrently execute so that the server can use whichever spooling system is most appropriate based on the features and capabilities of the spooling systems. Therefore, a need exists for a computer system that enables a multiple number of spooling systems to concurrently execute having access to the same endpoint for communications.